package fuentes;

public class Simbolo extends SimboloTerceto {
	private boolean declarado;
	private int cantOcurrencias;
	private String valor;
	private String nombre;

	private String nombre_var;
	
	public Simbolo(String nombre, String valor) {
		super();
		this.nombre = nombre;
		this.valor = valor;
		declarado=false;
		tipo="";
		nombre_var="";
		this.cantOcurrencias=1;
	}
	
	public int getCantOcurrencias() {
		return cantOcurrencias;
	}
	
	public void decrementarOcurrencias(){
		this.cantOcurrencias -= 1;
	}


	public void incrementarOcurrencias() {
		this.cantOcurrencias += 1;
	}	
	
	public Simbolo(String nombre, String valor, String tipo) {
		super();
		this.nombre = nombre;
		this.valor = valor;
		declarado=false;
		this.tipo=tipo;
		nombre_var="";
		this.cantOcurrencias=1;
	}
	
	public String getNombreVar() {
		return nombre_var;
	}

	public void setNombreVar(String nombreVar) {
		nombre_var = nombreVar;
	}

	public String getNombre() {
		return nombre;
	}


	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public String getValor() {
		return valor;
	}


	public void setValor(String valor) {
		this.valor = valor;
	}


	public String getTipo() {
		return tipo;
	}


	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public boolean isDeclarado() {
		return declarado;
	}


	public void declarar() {
		this.declarado = true;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((valor == null) ? 0 : valor.hashCode());
		return result;
	}


	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Simbolo other = (Simbolo) obj;
		if (valor == null) {
			if (other.valor != null)
				return false;
		} else if (!valor.equals(other.valor))
			return false;
		return true;
	}

	@Override
	public String mostrar() {
		if (!this.getTipo().equals("float") || this.getNombre().equals("ID"))
			return this.getValor();
		else
			return this.getNombreVar();
	}


	
	

}
